iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0
自我挑戰組

C# 和 SQL 探索之路 - 2系列 第 2

Day 2: C# Task 回傳值

  • 分享至 

  • xImage
  •  

大家好,今天是第二天 ~
之前曾經寫過 C# Task 的文章:Day 15: C# 多工處理: Task - iT 邦幫忙,不過裡面示範的程式沒有回傳資料,今天來看看如何在 Task 中回傳資料。

首先看第一個範例,建立泛型的 Task 類別,並在 Lambda 運算式裡回傳結果。

///<summary> 物品類別 </summary>
class Item
{
	public string? Name { get; set; }
	public int ID { get; set; }
}

///<summary> 執行程式 </summary>
public void Run(){
	// 以 Lambda 運算式建立 Task
	Task<Item> task3 = Task<Item>.Factory.StartNew(() =>
	{
    	string s = "Printer";
    	int id = 15;
    	return new Item {ID = id, Name = s};
	});
	Item printer = task3.Result; // 取得 Task 執行結果
	Console.WriteLine($"{printer.ID}-{printer.Name}");
}

再來是不用 Lambda 運算式,撰寫 Task 所需的方法:

///<summary> 物品類別 </summary>
class Item
{
	public string? Name { get; set; }
	public int ID { get; set; }
}

/// <summary> 建立新物品 </summary>
private Item NewItem(){
	Item newItem = new Item();
	newItem.ID = 30;
	newItem.Name = "Mouse";
	return newItem;
}

///<summary> 執行程式 </summary>
public void Run(){
	Task<Item> task4 = new Task<Item>(NewItem); // 傳入方法建立 Task
	task4.Start();
	Item mouse = task4.Result; // 取得 Task 執行結果
	Console.WriteLine($"{mouse.ID}-{mouse.Name}");
}

參考資料:How to: Return a Value from a Task


上一篇
Day 1: 哈囉 & C# 關鍵字: 空值結合運算子 - ??
下一篇
Day 3: C# 關鍵字: lock
系列文
C# 和 SQL 探索之路 - 230
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言